package services

//import (
//	"context"
//
//	"github.com/rs/zerolog/log"
//	"go.opentelemetry.io/otel/attribute"
//	"go.opentelemetry.io/otel/exporters/prometheus"
//	"go.opentelemetry.io/otel/metric"
//	metricApi "go.opentelemetry.io/otel/sdk/metric"
//)
//
//type LocalAIMetricsService struct {
//	Meter         metric.Meter
//	ApiTimeMetric metric.Float64Histogram
//}
//
//func (m *LocalAIMetricsService) ObserveAPICall(method string, path string, duration float64) {
//	opts := metric.WithAttributes(
//		attribute.String("method", method),
//		attribute.String("path", path),
//	)
//	m.ApiTimeMetric.Record(context.Background(), duration, opts)
//}
//
//// setupOTelSDK bootstraps the OpenTelemetry pipeline.
//// If it does not return an error, make sure to call shutdown for proper cleanup.
//func NewLocalAIMetricsService() (*LocalAIMetricsService, error) {
//	exporter, err := prometheus.New()
//	if err != nil {
//		return nil, err
//	}
//	provider := metricApi.NewMeterProvider(metricApi.WithReader(exporter))
//	meter := provider.Meter("github.com/mudler/LocalAI")
//
//	apiTimeMetric, err := meter.Float64Histogram("api_call", metric.WithDescription("api calls"))
//	if err != nil {
//		return nil, err
//	}
//
//	return &LocalAIMetricsService{
//		Meter:         meter,
//		ApiTimeMetric: apiTimeMetric,
//	}, nil
//}
//
//func (lams LocalAIMetricsService) Shutdown() error {
//	// TODO: Not sure how to actually do this:
//	//// setupOTelSDK bootstraps the OpenTelemetry pipeline.
//	//// If it does not return an error, make sure to call shutdown for proper cleanup.
//
//	log.Warn().Msgf("LocalAIMetricsService Shutdown called, but OTelSDK proper shutdown not yet implemented?")
//	return nil
//}
